package com.eerl.pdev.util;

import com.intellij.execution.ui.ConsoleView;
import com.intellij.openapi.components.Service;
import com.intellij.openapi.project.Project;

// 使用 @Service(Service.Level.PROJECT) 的主要优势包括：
//
//         自动化的生命周期管理：服务会在项目打开时创建，在项目关闭时销毁
//         依赖注入：IntelliJ Platform 会自动处理服务的依赖关系
//         延迟初始化：服务只有在第一次被请求时才会被创建
//         线程安全：服务实例的创建和访问是线程安全的
//         清晰的作用域：明确地将服务限定在项目范围内
// 确保每个 IDEA 实例（即每个打开的项目）都有自己独立的 Service 实例
@Service(Service.Level.PROJECT)
public final class ConsoleViewService {
    private final Project project;
    private ConsoleView consoleView;

    public ConsoleViewService(Project project) {
        this.project = project;
    }

    public void setConsoleView(ConsoleView consoleView) {
        this.consoleView = consoleView;
    }

    public ConsoleView getConsoleView() {
        return consoleView;
    }
}
//
// // 在 ToolWindowFactory 中
// public class EToolPluginConsoleToolWindowFactory implements ToolWindowFactory {
//     @Override
//     public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
//         ConsoleView consoleView = TextConsoleBuilderFactory.getInstance().createBuilder(project).getConsole();
//         Content content = ContentFactory.getInstance().createContent(consoleView.getComponent(), "", false);
//         toolWindow.getContentManager().addContent(content);
//
//         // 将 ConsoleView 存储在服务中
//         project.getService(ConsoleViewService.class).setConsoleView(consoleView);
//     }
//
//     // 使用这个方法来获取特定项目的 ConsoleView
//     public static void printToConsole(Project project, String message) {
//         ConsoleView consoleView = project.getService(ConsoleViewService.class).getConsoleView();
//         if (consoleView != null) {
//             consoleView.print(message + "\n", ConsoleViewContentType.NORMAL_OUTPUT);
//         }
//     }
// }